package gestionYClasesDeNegocio;

import controladores.*;
import controladores.exceptions.IllegalOrphanException;
import controladores.exceptions.NonexistentEntityException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class GestorPersistencia {

    //Usuario
    public static void guardarUsuario(UsuarioD usu) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("magaArchivo");
        UsuarioJpaController usuCont = new UsuarioJpaController(emf);
        usuCont.create(usu.getUsuarioJPA());
        emf.close();
    }

    public static UsuarioD cargarUsuario(int id) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("magaArchivo");
        UsuarioJpaController usuCont = new UsuarioJpaController(emf);
        UsuarioD usuD = new UsuarioD(usuCont.findUsuario(id));
        emf.close();
        return usuD;
    }

    public static void modificarUsuario(UsuarioD usu) {
        try {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("magaArchivo");
            UsuarioJpaController usuCont = new UsuarioJpaController(emf);
            usuCont.edit(usu.getUsuarioJPA());
            emf.close();
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(GestorPersistencia.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(GestorPersistencia.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(GestorPersistencia.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    //Comentario
    public static void guardarComentario(ComentarioD com) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("magaArchivo");
        ComentarioJpaController comCont = new ComentarioJpaController(emf);
        comCont.create(com.getComentarioJPA());
        emf.close();
    }
    
    public static ComentarioD cargarComentario(int id) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("magaArchivo");
        ComentarioJpaController comCont = new ComentarioJpaController(emf);
        ComentarioD comD = new ComentarioD(comCont.findComentario(id));
        emf.close();
        return comD;
    }
    
    public static void modificarComentario(ComentarioD com) {
        try {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("magaArchivo");
            ComentarioJpaController comCont = new ComentarioJpaController(emf);
            comCont.edit(com.getComentarioJPA());
            emf.close();
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(GestorPersistencia.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(GestorPersistencia.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(GestorPersistencia.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    //Objeto
    
     public static void guardarObjeto(ObjetoD obj) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("magaArchivo");
        ObjetoJpaController objCont = new ObjetoJpaController(emf);
        objCont.create(obj.getObjetoJPA());
        emf.close();
    }
    
    public static ObjetoD cargarObjeto(int id) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("magaArchivo");
        ObjetoJpaController objCont = new ObjetoJpaController(emf);
        ObjetoD objD = new ObjetoD(objCont.findObjeto(id));
        emf.close();
        return objD;
    }
    
    public static void modificarObjeto(ObjetoD obj) {
        try {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("magaArchivo");
            ObjetoJpaController objCont = new ObjetoJpaController(emf);
            objCont.edit(obj.getObjetoJPA());
            emf.close();
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(GestorPersistencia.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(GestorPersistencia.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(GestorPersistencia.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    //Tipo
    
    public static void guardarTipo(TipoD tip) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("magaArchivo");
        TipoJpaController tipCont = new TipoJpaController(emf);
        tipCont.create(tip.getTipoJPA());
        emf.close();
    }
    
    public static TipoD cargarTipo(int id) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("magaArchivo");
        TipoJpaController tipCont = new TipoJpaController(emf);
        TipoD tipD = new TipoD(tipCont.findTipo(id));
        emf.close();
        return tipD;
    }
    
    public static void modificarTipo(TipoD tip) {
        try {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("magaArchivo");
            TipoJpaController tipCont = new TipoJpaController(emf);
            tipCont.edit(tip.getTipoJPA());
            emf.close();
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(GestorPersistencia.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(GestorPersistencia.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(GestorPersistencia.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
}
